GENERALIDADES

Análisis de Correspondencias Binarias (ACB)

Es una técnica de análisis Exploratorio, que permite analizar los datos de una tabla de contingencia (tablas de doble entrada), formada por números positivos, como las frecuencias (Lebart, et al, 1985), que presentan algún tipo de relación entre las filas y las columnas y los transforma en una representación gráfica que facilita su interpretación

HISTORIA

Jean – Paul Benzècri, fue el primero quien popularizó una interpretación moderna del ACB, a principios de 1960, sin embargo sus fundamentos algebraicos se remontan a Hirschfeld en 1935 y a Fisher y Guttman en 1940

HISTORIA

Jean-Paul Benzécri (1932 - 2019) matemático y estadístico francés

L’analyse des Données; Tome II: l’Analyse des Correspondances, Dunod, Paris, 1973

USOS

Permite analizar los datos de una tabla de contingencia (IxJ), expresados en valores discretos o frecuencias absolutas

Ejemplo en Antropología Física:

Análisis de las frecuencias alélicas/haplotipos por poblaciones

Análisis de frecuencias de categorías mofológicas por poblaciones

Análisis de frecuencias de alimentos por poblaciones/estratos socio-económicos

…y en general a cualquier tabla de contingencia donde al menos una de las variables debe tener como mínimo 3 categorías para que podamos aplicar el ACB.

ANÁLISIS DE CORRESPONDENCIAS BINARIAS

El objetivo del ACB es describir la asociación que existe entre puntos filas y columnas, medidos por la Inercia = \(\LARGE \frac{\chi^2}{N}\)

El análisis de correspondencias descompone el test de ji-cuadrado asociado a una tabla de contingencia en componentes principales

Se emplearán los criterios propuestos por Benzècri, los cuales consisten en que los puntos filas/columnas se proyectan geométricamente en espacios vectoriales de mejor ajuste llamados Factores o Componentes, los cuales están asociados a la inercia.

Permite identificar patrones y relaciones significativas entre diferentes categorías de variables y representarlas de manera visual para una fácil interpretación

ANÁLISIS DE CORRESPONDENCIAS BINARIAS

Esquema del ACB

Matriz de Datos (tabla de contingencia) \(\rightarrow\) IxJ

ANÁLISIS DE CORRESPONDENCIAS BINARIAS

Esquema del ACB

Matriz de Datos (tabla de contingencia) \(\rightarrow\) IxJ

ANÁLISIS DE CORRESPONDENCIAS BINARIAS

Esquema del ACB

Matriz de Datos (tabla de contingencia) \(\rightarrow\) IxJ

ANÁLISIS DE CORRESPONDENCIAS BINARIAS

Esquema del ACB

Matriz de Datos (tabla de contingencia) \(\rightarrow\) IxJ

Matriz de perfiles filas \(\rightarrow\) \(\LARGE \frac{n_{ij}}{n_{i.}}\)

Matriz de perfiles columnas \(\rightarrow\) \(\LARGE \frac{n_{ij}}{n_{.j}}\)

ANÁLISIS DE CORRESPONDENCIAS BINARIAS

Esquema del ACB

ANÁLISIS DE CORRESPONDENCIAS BINARIAS

Resultados e Interpretación

El total de componentes o dimensiones será = min {I , J} -1

  • Valores propios(λα): expresan la inercia relativa (la varianza explicada) de cada eje

  • Puntuaciones o coordenadas de los puntos filas a cada uno de los componentes o dimensiones

  • Puntuaciones o coordenadas de los puntos columnas a cada uno de los componentes o dimensiones

ANÁLISIS DE CORRESPONDENCIAS BINARIAS

EJEMPLO

Usaremos la base: base_enca2014.xlsx (999 observaciones) de la Encuesta nacional de Consumo Alimentario del 2014.

library(readxl)   #Cargamos nuestra librería

base <- read_excel("data/base_enca2014.xlsx")   #Cargamos la base

#Agregamos las etiquetas a las variables categóricas
base$nse <- factor(base$nse, labels = c("Alto", "Medio_alto", "Medio", "Medio_Bajo", "Bajo"))
base$sex <- factor(base$sex, labels = c("Hombre","Mujer"))
base$macrozona <- factor(base$macrozona, labels = c("Norte","Centro Norte","Centro Sur","Sur","RM"))
base$area <- factor(base$area, labels = c("Urbano","Rural"))

Hacemos nuestra tabla de contingencia con la variables “nse” y “macrozona”, ya que son la variables que más categorías tienen. Recuerden que al menos una de las variables debe tener como mínimo 3 categorías para que podamos aplicar el ACB

table(base$nse, base$macrozona)
            
             Norte Centro Norte Centro Sur Sur  RM
  Alto           7           11         26   4  36
  Medio_alto    18           39         25  18  91
  Medio         27           36         39  27  80
  Medio_Bajo    25           73         71  48 156
  Bajo          17           31         32   9  53

ANÁLISIS DE CORRESPONDENCIAS BINARIAS

Calculamos la prueba de chi-cuadrado para probar la independencia de las variables. Si aceptamos la idependiencia, no tiene mucho sentido realizar un ACB, pues la calidad y representación de los ejes/componentes será muy baja, ya que las variables/categorías no estan asociadas. Por lo tanto, requerimos rechazar la hipótesis nula de independencia.

chisq.test(table(base$nse, base$macrozona))
    Pearson's Chi-squared test

data:  table(base$nse, base$macrozona)
X-squared = 31.165, df = 16, p-value = 0.01282

Como el p-valor es menor a 0.05, rechazamos la independencia y esto nos garantiza una buena calidad del ACB.

Calculamos el CA (Análisis de Correspondencia), para ello necesitamos los siguientes paquetes:

library(FactoMineR)         #Para hacer ACB
library(factoextra)         #Para usar opciones gráficas fviz_eig y fviz_contrib
library(corrplot)           #Para visualizar correlaciones

Usamos la función CA del paquete FactoMineR

res.ca <- CA(table(base$nse, base$macrozona), graph = FALSE)

ANÁLISIS DE CORRESPONDENCIAS BINARIAS

Revisamos la salida

summary(res.ca)

ANÁLISIS DE CORRESPONDENCIAS BINARIAS

Con la función fviz_eig() del paquete factoextra, podemos graficar los valores propios

fviz_eig(res.ca, addlabels = TRUE)

ANÁLISIS DE CORRESPONDENCIAS BINARIAS

Revisamos las contribuciones de los puntos columnas a los ejes

variables_columna=get_ca_col(res.ca)
contribuciones_columna=variables_columna$contrib
corrplot(contribuciones_columna, is.corr=FALSE, addCoef.col ="black", cl.ratio = 0.3)

ANÁLISIS DE CORRESPONDENCIAS BINARIAS

Revisamos las contribuciones de los puntos filas a los ejes

variables_fila=get_ca_row(res.ca)
contribuciones_fila=variables_fila$contrib
corrplot(contribuciones_fila, is.corr=FALSE, addCoef.col ="black", cl.ratio = 0.3)

ANÁLISIS DE CORRESPONDENCIAS BINARIAS

Finalmente vemos el BIPLOT, donde proyectamos de forma simultanea los puntos filas y columnas en los dos primeros componentes

plot.CA(res.ca, title="Análisis de Correspondencia")

ANÁLISIS DE CORRESPONDENCIAS BINARIAS

ANÁLISIS DE CORRESPONDENCIAS BINARIAS

El estudio del sistema HLA (Human leukocyte antigen), llamado tambien complejo principal de histocompatibilidad, tiene una gran utilidad en la genética comparada de poblaciones y la antropogenética debido a su forma de herencia, además de los estudios clínicos y médicos de respuesta inmune.

Usaremos la tabla 3 que tiene la frecuencia de los 6 alelos en 22 poblaciones.

ANÁLISIS DE CORRESPONDENCIAS BINARIAS

La tabla la pasamos a un fichero excel y de ahí a R.

base <- read_excel("data/base_hla.xlsx")
head(base)
# A tibble: 6 x 8
  Racecode Detailedrace/ethnicdescripti~1     A     C     B DRB3_4_5  DRB1  DQB1
  <chr>    <chr>                          <dbl> <dbl> <dbl>    <dbl> <dbl> <dbl>
1 AAFA     AfricanAmerican                  200   119   328       24   181    25
2 AFB      African                          150    64   197       12   102    20
3 AINDI    SouthAsianIndian                 167    70   242       15   160    23
4 AISC     AmericanIndian–SouthorCentral~    77    39   194       10    77    16
5 ALANAM   AlaskanativeorAleut               59    27    89       10    47    16
6 AMIND    NorthAmericanIndian              123    60   211       15   113    20
# i abbreviated name: 1: `Detailedrace/ethnicdescription`

Eliminamos las dos columnas de texto para que podamos usar solo los números

base2 <- base[ , -1:-2]   #Lo guardamos en base2

tabla <- as.table(as.matrix(base2))   #Convertimos la base en una tabla que podamos usar

rownames(tabla) <- base$Racecode   #Le agregamos los nombres de las poblaciones como index

chisq.test(tabla)  #Finalmente realizamos el test chi cuadrado
    Pearson's Chi-squared test

data:  tabla
X-squared = 106.97, df = 100, p-value = 0.2985

ANÁLISIS DE CORRESPONDENCIAS BINARIAS

Aunque el chi-cuadrado no nso favorece, igualmente realizaremos el ACB como ejercicio pedagógico y observaremos las diferencias con el anterior donde el chi-cuadrado si era significativo.

res.ca <- CA(tabla, graph = FALSE)
summary(res.ca)

ANÁLISIS DE CORRESPONDENCIAS BINARIAS

Graficamos los valores propios

fviz_eig(res.ca, addlabels = TRUE) # Graficar los valores propios

ANÁLISIS DE CORRESPONDENCIAS BINARIAS

Revisamos las contribuciones de los puntos filas a los ejes

variables_fila=get_ca_row(res.ca)
contribuciones_fila=variables_fila$contrib
contribuciones_fila
             Dim 1      Dim 2       Dim 3        Dim 4        Dim 5
AAFA    4.18098778 11.5766082  0.52224305  1.278609377 1.006220e+01
AFB     3.17762596  6.4891707  8.49952606  6.657506390 1.515352e+01
AINDI   2.99857250  4.6212671  4.78340400  7.346964744 1.671638e+01
AISC   31.42759661  2.8428647  2.00159954  2.489119657 7.124761e-05
ALANAM  1.63346955  1.3496396 30.92718103 13.281978828 4.526752e-02
AMIND   0.60764439  0.0546701  0.07131174  0.600140858 5.252245e-01
CARB    1.35040813  2.2602075  1.19271579  0.228445633 1.438676e-01
CARHIS  0.04048916 11.7400786 11.90541467  1.946137505 3.227667e+00
CARIBI  3.33249120  0.4636710  0.04071105  0.998194736 1.460052e+01
EURCAU  2.75295869 14.5104276  0.33950044  9.303542973 1.990569e+00
FILII   0.93688463  8.2315787  0.52968287  6.427120521 2.290007e+00
HAWI    3.75594673  1.0554969  0.94062901  0.485649285 3.111654e-01
JAPI    1.47340589  3.3735116  2.37348340  0.048879421 1.039902e+01
KORI    0.13498493 12.6711855  4.84540485  0.002762588 1.301114e+01
MENAFC 10.12740864  4.5096425  1.93197922  0.059474571 6.035646e+00
MSWHIS  3.99920910  1.4384168  0.37639860  2.516871586 1.305994e+00
NCHI    0.24574504  0.4046009 14.52173212  2.204265691 4.461257e-01
SCAHIS  0.29496348  5.0891375  5.18796081 16.598372651 1.418338e+00
SCAMB  26.67709613  0.7435247  1.32597712  3.137001611 5.245354e-01
SCSEAI  0.12805989  5.5626207  1.84612690 23.997925392 2.484051e-01
VIET    0.72405157  1.0116792  5.83701773  0.391035982 1.544334e+00

ANÁLISIS DE CORRESPONDENCIAS BINARIAS

Revisamos las contribuciones de los puntos columnas a los ejes

variables_columna=get_ca_col(res.ca)
contribuciones_columna=variables_columna$contrib
corrplot(contribuciones_columna, is.corr=FALSE, addCoef.col ="black", cl.ratio = 0.3)

ANÁLISIS DE CORRESPONDENCIAS BINARIAS

Finalmente hacemos el BIPLOT

plot.CA(res.ca, title="Análisis de Correspondencia")